package com.liz.tectSelect.vertxSpringbootRestfulApi;

import com.liz.tectSelect.vertxSpringbootRestfulApi.domain.User;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.RoutingContext;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.ext.web.handler.StaticHandler;
import org.springframework.stereotype.Component;

import java.util.Random;
import java.util.UUID;

@Component
public class VertxServer extends AbstractVerticle {

    @Override
    public void start() throws Exception {

        Router router = Router.router(vertx);
        router.route().handler(BodyHandler.create());

//         routerMapping(new HelloController(), router);
        //请求路径
        router.get("/users")
                .produces("application/json")

                //使用evenloop线程执行
                //.handler(this::getCustomerById);

                //创建新的线程执行（一般用于执行阻塞调用）
                .blockingHandler(this::getById);

        router.route().handler(StaticHandler.create());

        // 开启监听端口
        vertx.createHttpServer().requestHandler(router).listen(8082);

    }

    /**
     * 模拟调用方法
     *
     * @param rc
     */

    private void getById(RoutingContext rc) {

        //获取请求参数
//        Long id = Long.parseLong(rc.request().getParam("id"));

        User user = new User();
        String id = UUID.randomUUID().toString();
        user.setId(id);
        user.setName("Vert.x_name_" + id);
        user.setAge((short)new Random().nextInt());
        user.setUuid(id);
        JsonObject obj = JsonObject.mapFrom(user);

        rc.response().putHeader("content-type", "application/json")
                .end(obj.encodePrettily());
        /*
         * 返回请求值
         */
//        rc.response().
//                setStatusMessage("ok") //  http响应状态描述值
//                .setStatusCode(200)//  http响应状态码
//                .end("this is ok"); //返回内容

    }

}
